<html>
  <head>
    <title>异常本地化</title>
  </head>
  <body>
    <script>
      /*
                    四、异常本地化
                            
                            抛出异常的一个问题是如何在将错误消息发送到客户端时对其进行本地化。

                            ABP提供了两种模型极其变体。

                                1、用户友好型异常：
                                        如果一个异常实现了 IUserFriendlyException 接口，那么ABP不会改变的 Message 和 Details ，并直接将其发送给客户端。
                                    
                                        UserFriendlyException 类是 IUserFriendlyException接口的内置实现。

                                        示例用法：
                                            throw new UserFriendlyException(
                                                "Username should be unique!"
                                            );

                                        这样，根本不需要本地化。

                                        如果要本地化消息，可以注入并使用标准的"字符串本地化器"：
                                            throw new UserFriendlyException(_stringLocalizer["UserNameShouldBeUniqueMessage"]);
                                        然后在"本地化资源"中为每种语言定义它。

                                        eg:
                                            {
                                                "culture": "en",
                                                "texts": {
                                                    "UserNameShouldBeUniqueMessage": "Username should be unique!"
                                                }
                                            }

                                        字符串本地化器已经支持参数化消息。
                                        
                                        例如：
                                            throw new UserFriendlyException(_stringLocalizer["UserNameShouldBeUniqueMessage", "john"]);

                                        那么它的本地化文本可以是：

                                            "UserNameShouldBeUniqueMessage": "Username should be unique! '{0}' is already taken!"

                                        IUserFriendlyException接口派生自IBusinessException，
                                        UserFriendlyException类派生自BusinessException类。    
                */
    </script>
  </body>
</html>